package com.shenganyuan.smac.common.data;

import com.shenganyuan.smac.common.beans.ApiActivitys;
import com.shenganyuan.smac.common.beans.ApiChangeInfo;
import com.shenganyuan.smac.common.beans.ApiChangeRecords;
import com.shenganyuan.smac.common.beans.ApiCheckRecords;
import com.shenganyuan.smac.common.beans.ApiLoginUser;
import com.shenganyuan.smac.common.beans.ApiMainWork;
import com.shenganyuan.smac.common.beans.ApiMessage;
import com.shenganyuan.smac.common.beans.ApiRisk;
import com.shenganyuan.smac.common.beans.ApiRiskInfos;
import com.shenganyuan.smac.common.beans.ApiRiskPoints;
import com.shenganyuan.smac.common.beans.ApiRiskRecords;
import com.shenganyuan.smac.common.beans.ApiTasks;
import com.shenganyuan.smac.common.beans.ApiWorkLog;
import com.shenganyuan.smac.common.beans.ApiWorkLogSecond;
import com.shenganyuan.smac.common.beans.BaseBoolResult;
import com.shenganyuan.smac.contact.model.ApiMainContact;

import java.util.Map;

import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * 接口信息
 */
public interface Api {
    /**
     * 1.登录
     */
    @POST("login")
    Observable<ApiLoginUser> login(@Query("name") String username, @Query("password") String password);

    /**
     * 2.主页信息获取
     **/
    @GET("main")
    Observable<ApiMainWork> mainWork(@Query("id") String userId, @Query("zq") String zq, @Query("token") String token);

    /**
     * 3.主页各风险点切换信息
     *
     * @param userId
     * @param zq
     * @param token
     * @return
     */
    @GET("risk")
    Observable<ApiRisk> mainRisks(@Query("id") String userId, @Query("zq") String zq, @Query("token") String token);

    /**
     * 4.扫描二维码获取用户某风险点的所有危险源信息
     * zyhdid
     */
    @GET("wxbs")
    Observable<ApiRiskInfos> getRiskInfos(@Query("djuserid") String userId, @Query("gkzydyid") String gkzydyid, @Query("zyhdid") String zyhdid, @Query("zq") String zq, @Query("token") String token);

    /**
     *5.巡查信息保存
     */


    /**
     * 6巡查位置设置
     * 用户扫描二维码时判断该风险点是否设置过GPS位置，如没有此功能用来保存该风险点GPS位置
     * djuserid	是	String	用户ID，登录返回值djuser的ID
     * gkzydyid	是	String	二维码扫描获取的风险点ID
     * gps	是	String	GPS坐标
     * token	是	String	登录返回值access_token
     */
    @GET("xcdsz")
    Observable<BaseBoolResult> xcwzsz(@Query("djuserid") String userId, @Query("gkzydyid") String gkzydyid,
                                      @Query("gps") String gps, @Query("token") String token);


    /**
     * 7.获取某风险点详细信息
     *
     * @param gkzydyid 二维码扫描获取的风险点ID
     * @param token
     * @return
     */
    @GET("zydyid")
    Observable<ApiCheckRecords> getRiskPointInfo(@Query("gkzydyid") String gkzydyid, @Query("token") String token);

    /**
     * 8.获取某危险源详细信息
     *
     * @param gkwxbsid 危险源ID
     * @param token
     * @return
     */
    @GET("wxbsid")
    Observable<ApiCheckRecords> getRiskResourceInfo(@Query("gkwxbsid") String gkwxbsid, @Query("token") String token);

    /**
     * 9.隐患信息保存=========使用文件上传接口
     *
     * @param map djuserid	是	String	用户ID，登录返回值djuser的ID
     *            gkwxbsid	是	String	危险源ID
     *            gkzydyid	是	String	风险点ID
     *            yhnr	是	String	隐患内容 最大值100字内
     *            gps	是	String	GPS坐标
     *            picfile	是	String	照片名 如多文件上传文件名加序号
     *            token	是	String	登录返回值access_token
     * @return
     */
    @FormUrlEncoded
    @POST("yhxxsave")
    Observable<BaseBoolResult> riskInfoSave(@FieldMap Map<String, String> map);

    /**
     * 10.巡查记录
     */
    @GET("xcxxlist")
    Observable<ApiCheckRecords> getCheckRecords(@Query("djuserid") String djuserid, @Query("gkzydyid") String gkzydyid, @Query("token") String token);

    /**
     * 11.获取当前用户所有风险点（巡查点）
     */
    @GET("zydylist")
    Observable<ApiRiskPoints> getRiskPoints(@Query("djuserid") String djuserid, @Query("token") String token);

    /**
     * 12.隐患记录
     */
    @GET("yhxxlist")
    Observable<ApiRiskRecords> getRiskRecords(@Query("djuserid") String djuserid, @Query("gkzydyid") String gkzydyid, @Query("token") String token);

    /**
     * 13.整改信息
     *
     * @param pcyhxxid 风险点ID  全部风险点为空值
     * @param token
     * @return
     */
    @GET("zgxxpage")
    Observable<ApiChangeInfo> getChangeInfo(@Query("pcyhxxid") String pcyhxxid, @Query("token") String token);

    /**
     * 14.整改信息录入=========使用文件上传接口
     *
     * @param map pcyhxxid	是	String	风险点ID（gkZydyId）
     *            pczgjl	是	String	整改内容最大值100字内
     *            gps	是	String	GPS位置（***;***）
     *            djuserid	是	String	登录用户ID
     *            picfile	是	String	照片名 如多文件上传文件名加序号
     *            token	是	String	登录返回值access_token
     * @return
     */
    @FormUrlEncoded
    @POST("zgxxsave")
    Observable<BaseBoolResult> changeInfoSave(@FieldMap Map<String, String> map);

    /**
     * 15.整改记录
     */
    @GET("zgxxlist")
    Observable<ApiChangeRecords> getChangeRecords(@Query("djuserid") String djuserid, @Query("zgzt") String zgzt, @Query("token") String token);

    /**
     * 16.隐患整改信息
     * 隐患与针对该隐患整改的详细信息，是隐患记录和整改记录二级详细信息页面
     *
     * @param pcyhxxid 风险点ID（gkZydyId）
     * @param token
     * @return
     */
    @GET("yhzgpage")
    Observable<ApiChangeInfo> getRiskChangeInfo(@Query("pcyhxxid") String pcyhxxid, @Query("token") String token);

    /**
     * 17.消息汇总
     */
    @GET("message")
    Observable<ApiMessage> getMainMsgs(@Query("jsuserid") String jsuserid, @Query("token") String token);

    /**
     * 18.对话消息汇总
     */
    @GET("messagedh")
    Observable<ApiMessage> getDhMsgs(@Query("jsuserid") String jsuserid, @Query("fbuserid") String fbuserid, @Query("token") String token);

    /**
     * 19.消息发布
     */
    @FormUrlEncoded
    @POST("messagesave")
    Observable<BaseBoolResult> messagesave(@FieldMap Map<String, String> map);

    /**
     * 20.联系人
     */
    @GET("contacts")
    Observable<ApiMainContact> mainContacts(@Query("djuserid") String userId, @Query("token") String token);

    /**
     * 21.签到
     */
    @FormUrlEncoded
    @POST("signsave")
    Observable<BaseBoolResult> signsave(@FieldMap Map<String, String> map);

    /**
     * 22.请假
     */
    @FormUrlEncoded
    @POST("leavesave")
    Observable<BaseBoolResult> leavesave(@FieldMap Map<String, String> map);

    /**
     * 23.施工日志
     * djuserid	是	String	登录用户ID
     * xcdate	是	String	巡查时间 YYYYMM (年月)
     * token	是
     */

    @GET("xcxxdate")
    Observable<ApiWorkLog> getWorkLogs(@Query("djuserid") String djuserid, @Query("xcdate") String xcdate, @Query("token") String token);

    /**
     * 24.施工日志二级页面
     */
    @GET("journaltodate")
    Observable<ApiWorkLogSecond> getWorkLogsSecond(@Query("djuserid") String djuserid, @Query("xcdate") String xcdate, @Query("token") String token);

    /**
     * 25.施工日志三级页面
     */

    /**
     * 26.	我的－〉我的隐患排查任务，是用来显示当前用户所有隐患排查任务的功能
     */
    @GET("rwfp")
    Observable<ApiTasks> getTasks(@Query("djuserid") String djuserid, @Query("token") String token);

    /**
     * 27.	获取某风险点、某巡查周期、某登录人的所有作业活动
     */
    @GET("zyhdlist")
    Observable<ApiActivitys> getZyhdlist(@Query("djuserid") String djuserid, @Query("gkzydyid") String gkzydyid, @Query("zq") String zq, @Query("token") String token);


}
